home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / include / rpm / rpmbuild.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-10-22  |  17.1 KB  |  539 lines

  1. #ifndef    _H_RPMBUILD_
  2. #define    _H_RPMBUILD_
  3.  
  4. /** \ingroup rpmbuild
  5.  * \file build/rpmbuild.h
  6.  *  This is the *only* module users of librpmbuild should need to include.
  7.  */
  8.  
  9. #include "rpmcli.h"
  10.  
  11. /* and it shouldn't need these :-( */
  12. #include "stringbuf.h"
  13. #include "misc.h"
  14.  
  15. /* but this will be needed */
  16. #include "rpmspec.h"
  17.  
  18. /** \ingroup rpmbuild
  19.  * Bit(s) to control buildSpec() operation.
  20.  */
  21. /*@-typeuse@*/
  22. typedef enum rpmBuildFlags_e {
  23. /*@-enummemuse@*/
  24.     RPMBUILD_NONE    = 0,
  25. /*@=enummemuse@*/
  26.     RPMBUILD_PREP    = (1 <<  0),    /*!< Execute %%prep. */
  27.     RPMBUILD_BUILD    = (1 <<  1),    /*!< Execute %%build. */
  28.     RPMBUILD_INSTALL    = (1 <<  2),    /*!< Execute %%install. */
  29.     RPMBUILD_CHECK    = (1 <<  3),    /*!< Execute %%check. */
  30.     RPMBUILD_CLEAN    = (1 <<  4),    /*!< Execute %%clean. */
  31.     RPMBUILD_FILECHECK    = (1 <<  5),    /*!< Check %%files manifest. */
  32.     RPMBUILD_PACKAGESOURCE = (1 <<  6),    /*!< Create source package. */
  33.     RPMBUILD_PACKAGEBINARY = (1 <<  7),    /*!< Create binary package(s). */
  34.     RPMBUILD_RMSOURCE    = (1 <<  8),    /*!< Remove source(s) and patch(s). */
  35.     RPMBUILD_RMBUILD    = (1 <<  9),    /*!< Remove build sub-tree. */
  36.     RPMBUILD_STRINGBUF    = (1 << 10),    /*!< only for doScript() */
  37.     RPMBUILD_RMSPEC    = (1 << 11)    /*!< Remove spec file. */
  38. } rpmBuildFlags;
  39. /*@=typeuse@*/
  40.  
  41. #include <ctype.h>
  42.  
  43. #define SKIPSPACE(s) { while (*(s) && xisspace(*(s))) (s)++; }
  44. #define SKIPNONSPACE(s) { while (*(s) && !xisspace(*(s))) (s)++; }
  45.  
  46. #define PART_SUBNAME  0
  47. #define PART_NAME     1
  48.  
  49. /** \ingroup rpmbuild
  50.  * Spec file parser states.
  51.  */
  52. typedef enum rpmParseState_e {
  53.     PART_NONE        =  0,    /*!< */
  54.     PART_PREAMBLE    =  1,    /*!< */
  55.     PART_PREP        =  2,    /*!< */
  56.     PART_BUILD        =  3,    /*!< */
  57.     PART_INSTALL    =  4,    /*!< */
  58.     PART_CHECK        =  5,    /*!< */
  59.     PART_CLEAN        =  6,    /*!< */
  60.     PART_FILES        =  7,    /*!< */
  61.     PART_PRE        =  8,    /*!< */
  62.     PART_POST        =  9,    /*!< */
  63.     PART_PREUN        = 10,    /*!< */
  64.     PART_POSTUN        = 11,    /*!< */
  65.     PART_PRETRANS    = 12,    /*!< */
  66.     PART_POSTTRANS    = 13,    /*!< */
  67.     PART_DESCRIPTION    = 14,    /*!< */
  68.     PART_CHANGELOG    = 15,    /*!< */
  69.     PART_TRIGGERIN    = 16,    /*!< */
  70.     PART_TRIGGERUN    = 17,    /*!< */
  71.     PART_VERIFYSCRIPT    = 18,    /*!< */
  72.     PART_BUILDARCHITECTURES= 19,/*!< */
  73.     PART_TRIGGERPOSTUN    = 20,    /*!< */
  74.     PART_TRIGGERPREIN    = 21,    /*!< */
  75.     PART_LAST        = 22    /*!< */
  76. } rpmParseState;
  77.  
  78. #define STRIP_NOTHING             0
  79. #define STRIP_TRAILINGSPACE (1 << 0)
  80. #define STRIP_COMMENTS      (1 << 1)
  81.  
  82. #ifdef __cplusplus
  83. extern "C" {
  84. #endif
  85. /*@-redecl@*/
  86.  
  87. /** \ingroup rpmbuild
  88.  * Destroy uid/gid caches.
  89.  */
  90. void freeNames(void)
  91.     /*@globals internalState@*/
  92.     /*@modifies internalState */;
  93.  
  94. /** \ingroup rpmbuild
  95.  * Return cached user name from user id.
  96.  * @todo Implement using hash.
  97.  * @param uid        user id
  98.  * @return        cached user name
  99.  */
  100. extern /*@observer@*/ const char * getUname(uid_t uid)
  101.     /*@globals internalState @*/
  102.     /*@modifies internalState @*/;
  103.  
  104. /** \ingroup rpmbuild
  105.  * Return cached user name.
  106.  * @todo Implement using hash.
  107.  * @param uname        user name
  108.  * @return        cached user name
  109.  */
  110. extern /*@observer@*/ const char * getUnameS(const char * uname)
  111.     /*@globals internalState @*/
  112.     /*@modifies internalState @*/;
  113.  
  114. /** \ingroup rpmbuild
  115.  * Return cached user id.
  116.  * @todo Implement using hash.
  117.  * @param uname        user name
  118.  * @return        cached uid
  119.  */
  120. uid_t getUidS(const char * uname)
  121.     /*@globals internalState @*/
  122.     /*@modifies internalState @*/;
  123.  
  124. /** \ingroup rpmbuild
  125.  * Return cached group name from group id.
  126.  * @todo Implement using hash.
  127.  * @param gid        group id
  128.  * @return        cached group name
  129.  */
  130. extern /*@observer@*/ const char * getGname(gid_t gid)
  131.     /*@globals internalState @*/
  132.     /*@modifies internalState @*/;
  133.  
  134. /** \ingroup rpmbuild
  135.  * Return cached group name.
  136.  * @todo Implement using hash.
  137.  * @param gname        group name
  138.  * @return        cached group name
  139.  */
  140. extern /*@observer@*/ const char * getGnameS(const char * gname)
  141.     /*@globals internalState @*/
  142.     /*@modifies internalState @*/;
  143.  
  144. /** \ingroup rpmbuild
  145.  * Return cached group id.
  146.  * @todo Implement using hash.
  147.  * @param gname        group name
  148.  * @return        cached gid
  149.  */
  150. gid_t getGidS(const char * gname)
  151.     /*@globals internalState @*/
  152.     /*@modifies internalState @*/;
  153.  
  154. /** \ingroup rpmbuild
  155.  * Return build hostname.
  156.  * @return        build hostname
  157.  */
  158. extern /*@observer@*/ const char * const buildHost(void)    /*@*/;
  159.  
  160. /** \ingroup rpmbuild
  161.  * Return build time stamp.
  162.  * @return        build time stamp
  163.  */
  164. extern /*@observer@*/ int_32 * const getBuildTime(void)    /*@*/;
  165.  
  166. /** \ingroup rpmbuild
  167.  * Read next line from spec file.
  168.  * @param spec        spec file control structure
  169.  * @param strip        truncate comments?
  170.  * @return        0 on success, 1 on EOF, <0 on error
  171.  */
  172. int readLine(Spec spec, int strip)
  173.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  174.     /*@modifies spec->fileStack, spec->readStack, spec->line, spec->lineNum,
  175.         spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
  176.         rpmGlobalMacroContext, fileSystem, internalState  @*/;
  177.  
  178. /** \ingroup rpmbuild
  179.  * Stop reading from spec file, freeing resources.
  180.  * @param spec        spec file control structure
  181.  */
  182. void closeSpec(/*@partial@*/ Spec spec)
  183.     /*@globals fileSystem, internalState @*/
  184.     /*@modifies spec->fileStack, fileSystem, internalState @*/;
  185.  
  186. /** \ingroup rpmbuild
  187.  * Truncate comment lines.
  188.  * @param s        skip white space, truncate line at '#'
  189.  */
  190. void handleComments(char * s)
  191.     /*@modifies s @*/;
  192.  
  193. /** \ingroup rpmbuild
  194.  * Check line for section separator, return next parser state.
  195.  * @param        line from spec file
  196.  * @return        next parser state
  197.  */
  198. rpmParseState isPart(const char * line)    /*@*/;
  199.  
  200. /** \ingroup rpmbuild
  201.  * Parse a number.
  202.  * @param        line from spec file
  203.  * @retval res        pointer to int
  204.  * @return        0 on success, 1 on failure
  205.  */
  206. int parseNum(/*@null@*/ const char * line, /*@null@*/ /*@out@*/int * res)
  207.     /*@modifies *res @*/;
  208.  
  209. /** \ingroup rpmbuild
  210.  * Add changelog entry to header.
  211.  * @param h        header
  212.  * @param time        time of change
  213.  * @param name        person who made the change
  214.  * @param text        description of change
  215.  */
  216. void addChangelogEntry(Header h, time_t time, const char * name,
  217.         const char * text)
  218.     /*@modifies h @*/;
  219.  
  220. /** \ingroup rpmbuild
  221.  * Parse %%build/%%install/%%clean section(s) of a spec file.
  222.  * @param spec        spec file control structure
  223.  * @param parsePart    current rpmParseState
  224.  * @return        >= 0 next rpmParseState, < 0 on error
  225.  */
  226. int parseBuildInstallClean(Spec spec, rpmParseState parsePart)
  227.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  228.     /*@modifies spec->build, spec->install, spec->check, spec->clean,
  229.         spec->macros,
  230.         spec->fileStack, spec->readStack, spec->line, spec->lineNum,
  231.         spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
  232.         rpmGlobalMacroContext, fileSystem, internalState @*/;
  233.  
  234. /** \ingroup rpmbuild
  235.  * Parse %%changelog section of a spec file.
  236.  * @param spec        spec file control structure
  237.  * @return        >= 0 next rpmParseState, < 0 on error
  238.  */
  239. int parseChangelog(Spec spec)
  240.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  241.     /*@modifies spec->fileStack, spec->readStack, spec->line, spec->lineNum,
  242.         spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
  243.         spec->packages->header,
  244.         rpmGlobalMacroContext, fileSystem, internalState @*/;
  245.  
  246. /** \ingroup rpmbuild
  247.  * Parse %%description section of a spec file.
  248.  * @param spec        spec file control structure
  249.  * @return        >= 0 next rpmParseState, < 0 on error
  250.  */
  251. int parseDescription(Spec spec)
  252.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  253.     /*@modifies spec->packages,
  254.         spec->fileStack, spec->readStack, spec->line, spec->lineNum,
  255.         spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
  256.         spec->st,
  257.         rpmGlobalMacroContext, fileSystem, internalState  @*/;
  258.  
  259. /** \ingroup rpmbuild
  260.  * Parse %%files section of a spec file.
  261.  * @param spec        spec file control structure
  262.  * @return        >= 0 next rpmParseState, < 0 on error
  263.  */
  264. int parseFiles(Spec spec)
  265.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  266.     /*@modifies spec->packages,
  267.         spec->fileStack, spec->readStack, spec->line, spec->lineNum,
  268.         spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
  269.         rpmGlobalMacroContext, fileSystem, internalState @*/;
  270.  
  271. /** \ingroup rpmbuild
  272.  * Parse tags from preamble of a spec file.
  273.  * @param spec        spec file control structure
  274.  * @param initialPackage
  275.  * @return        >= 0 next rpmParseState, < 0 on error
  276.  */
  277. int parsePreamble(Spec spec, int initialPackage)
  278.     /*@globals rpmGlobalMacroContext, h_errno,
  279.         fileSystem, internalState @*/
  280.     /*@modifies spec->packages,
  281.         spec->fileStack, spec->readStack, spec->line, spec->lineNum,
  282.         spec->buildSubdir,
  283.         spec->macros, spec->st, spec->buildRootURL,
  284.         spec->sources, spec->numSources, spec->noSource,
  285.         spec->buildRestrictions, spec->BANames, spec->BACount,
  286.         spec->gotBuildRootURL,
  287.         spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
  288.         rpmGlobalMacroContext, fileSystem, internalState @*/;
  289.  
  290. /** \ingroup rpmbuild
  291.  * Parse %%prep section of a spec file.
  292.  * @param spec        spec file control structure
  293.  * @return        >= 0 next rpmParseState, < 0 on error
  294.  */
  295. int parsePrep(Spec spec)
  296.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  297.     /*@modifies spec->prep, spec->buildSubdir, spec->macros,
  298.         spec->fileStack, spec->readStack, spec->line, spec->lineNum,
  299.         spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
  300.         rpmGlobalMacroContext, fileSystem, internalState @*/;
  301.  
  302. /** \ingroup rpmbuild
  303.  * Parse dependency relations from spec file and/or autogenerated output buffer.
  304.  * @param spec        spec file control structure
  305.  * @param pkg        package control structure
  306.  * @param field        text to parse (e.g. "foo < 0:1.2-3, bar = 5:6.7")
  307.  * @param tagN        tag, identifies type of dependency
  308.  * @param index        (0 always)
  309.  * @param tagflags    dependency flags already known from context
  310.  * @return        0 on success, RPMERR_BADSPEC on failure
  311.  */
  312. int parseRCPOT(Spec spec, Package pkg, const char * field, rpmTag tagN,
  313.         int index, rpmsenseFlags tagflags)
  314.     /*@globals rpmGlobalMacroContext, h_errno @*/
  315.     /*@modifies rpmGlobalMacroContext @*/;
  316.  
  317. /** \ingroup rpmbuild
  318.  * Parse %%pre et al scriptlets from a spec file.
  319.  * @param spec        spec file control structure
  320.  * @param parsePart    current rpmParseState
  321.  * @return        >= 0 next rpmParseState, < 0 on error
  322.  */
  323. int parseScript(Spec spec, int parsePart)
  324.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  325.     /*@modifies spec->packages,
  326.         spec->fileStack, spec->readStack, spec->line, spec->lineNum,
  327.         spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
  328.         rpmGlobalMacroContext, fileSystem, internalState  @*/;
  329.  
  330. /** \ingroup rpmbuild
  331.  * Evaluate boolean expression.
  332.  * @param spec        spec file control structure
  333.  * @param expr        expression to parse
  334.  * @return
  335.  */
  336. int parseExpressionBoolean(Spec spec, const char * expr)
  337.     /*@globals rpmGlobalMacroContext, h_errno @*/
  338.     /*@modifies rpmGlobalMacroContext @*/;
  339.  
  340. /** \ingroup rpmbuild
  341.  * Evaluate string expression.
  342.  * @param spec        spec file control structure
  343.  * @param expr        expression to parse
  344.  * @return
  345.  */
  346. /*@unused@*/ /*@null@*/
  347. char * parseExpressionString(Spec spec, const char * expr)
  348.     /*@globals rpmGlobalMacroContext, h_errno @*/
  349.     /*@modifies rpmGlobalMacroContext @*/;
  350.  
  351. /** \ingroup rpmbuild
  352.  * Run a build script, assembled from spec file scriptlet section.
  353.  *
  354.  * @param spec        spec file control structure
  355.  * @param what        type of script
  356.  * @param name        name of scriptlet section
  357.  * @param sb        lines that compose script body
  358.  * @param test        don't execute scripts or package if testing
  359.  * @return        0 on success, RPMERR_SCRIPT on failure
  360.  */
  361. int doScript(Spec spec, int what, /*@null@*/ const char * name,
  362.         /*@null@*/ StringBuf sb, int test)
  363.     /*@globals rpmGlobalMacroContext, h_errno,
  364.         fileSystem, internalState @*/
  365.     /*@modifies spec->macros,
  366.         rpmGlobalMacroContext, fileSystem, internalState @*/;
  367.  
  368. /** \ingroup rpmbuild
  369.  * Find sub-package control structure by name.
  370.  * @param spec        spec file control structure
  371.  * @param name        (sub-)package name
  372.  * @param flag        if PART_SUBNAME, then 1st package name is prepended
  373.  * @retval pkg        package control structure
  374.  * @return        0 on success, 1 on failure
  375.  */
  376. int lookupPackage(Spec spec, /*@null@*/ const char * name, int flag,
  377.         /*@out@*/ Package * pkg)
  378.     /*@modifies spec->packages, *pkg @*/;
  379.  
  380. /** \ingroup rpmbuild
  381.  * Create and initialize package control structure.
  382.  * @param spec        spec file control structure
  383.  * @return        package control structure
  384.  */
  385. /*@only@*/
  386. Package newPackage(Spec spec)
  387.     /*@modifies spec->packages, spec->packages->next @*/;
  388.  
  389. /** \ingroup rpmbuild
  390.  * Destroy all packages associated with spec file.
  391.  * @param packages    package control structure chain
  392.  * @return        NULL
  393.  */
  394. /*@null@*/
  395. Package freePackages(/*@only@*/ /*@null@*/ Package packages)
  396.     /*@globals fileSystem @*/
  397.     /*@modifies packages, fileSystem @*/;
  398.  
  399. /** \ingroup rpmbuild
  400.  * Destroy package control structure.
  401.  * @param pkg        package control structure
  402.  * @return        NULL
  403.  */
  404. /*@null@*/
  405. Package  freePackage(/*@only@*/ /*@null@*/ Package pkg)
  406.     /*@globals fileSystem @*/
  407.     /*@modifies pkg, fileSystem @*/;
  408.  
  409. /** \ingroup rpmbuild
  410.  * Add dependency to header, filtering duplicates.
  411.  * @param spec        spec file control structure
  412.  * @param h        header
  413.  * @param tagN        tag, identifies type of dependency
  414.  * @param N        (e.g. Requires: foo < 0:1.2-3, "foo")
  415.  * @param EVR        (e.g. Requires: foo < 0:1.2-3, "0:1.2-3")
  416.  * @param Flags        (e.g. Requires: foo < 0:1.2-3, both "Requires:" and "<")
  417.  * @param index        (0 always)
  418.  * @return        0 always
  419.  */
  420. int addReqProv(/*@unused@*/Spec spec, Header h, rpmTag tagN,
  421.         const char * N, const char * EVR, rpmsenseFlags Flags,
  422.         int index)
  423.     /*@modifies h @*/;
  424.  
  425. /** \ingroup rpmbuild
  426.  * Add rpmlib feature dependency.
  427.  * @param h        header
  428.  * @param feature    rpm feature name (i.e. "rpmlib(Foo)" for feature Foo)
  429.  * @param featureEVR    rpm feature epoch/version/release
  430.  * @return        0 always
  431.  */
  432. int rpmlibNeedsFeature(Header h, const char * feature, const char * featureEVR)
  433.     /*@modifies h @*/;
  434.  
  435. /** \ingroup rpmbuild
  436.  * Post-build processing for binary package(s).
  437.  * @param spec        spec file control structure
  438.  * @param installSpecialDoc
  439.  * @param test        don't execute scripts or package if testing
  440.  * @return        0 on success
  441.  */
  442. int processBinaryFiles(Spec spec, int installSpecialDoc, int test)
  443.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  444.     /*@modifies spec->macros,
  445.         spec->packages->cpioList, spec->packages->fileList,
  446.         spec->packages->specialDoc, spec->packages->header,
  447.         rpmGlobalMacroContext, fileSystem, internalState @*/;
  448.  
  449. /** \ingroup rpmbuild
  450.  * Create and initialize header for source package.
  451.  * @param spec        spec file control structure
  452.  */
  453. void initSourceHeader(Spec spec)
  454.     /*@modifies spec->sourceHeader,
  455.         spec->buildRestrictions, spec->BANames,
  456.         spec->packages->header @*/;
  457.  
  458. /** \ingroup rpmbuild
  459.  * Post-build processing for source package.
  460.  * @param spec        spec file control structure
  461.  * @return        0 on success
  462.  */
  463. int processSourceFiles(Spec spec)
  464.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  465.     /*@modifies spec->sourceHeader, spec->sourceCpioList,
  466.         spec->buildRestrictions, spec->BANames,
  467.         spec->packages->header,
  468.         rpmGlobalMacroContext, fileSystem, internalState @*/;
  469.  
  470. /** \ingroup rpmbuild
  471.  * Parse spec file into spec control structure.
  472.  * @param ts        transaction set (spec file control in ts->spec)
  473.  * @param specFile
  474.  * @param rootURL
  475.  * @param buildRootURL
  476.  * @param recursing    parse is recursive?
  477.  * @param passPhrase
  478.  * @param cookie
  479.  * @param anyarch
  480.  * @param force
  481.  * @return
  482.  */
  483. int parseSpec(rpmts ts, const char * specFile,
  484.         /*@null@*/ const char * rootURL,
  485.         /*@null@*/ const char * buildRootURL,
  486.         int recursing,
  487.         /*@null@*/ const char * passPhrase,
  488.         /*@null@*/ char * cookie,
  489.         int anyarch, int force)
  490.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  491.     /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
  492.  
  493. /** \ingroup rpmbuild
  494.  * Build stages state machine driver.
  495.  * @param ts        transaction set
  496.  * @param spec        spec file control structure
  497.  * @param what        bit(s) to enable stages of build
  498.  * @param test        don't execute scripts or package if testing
  499.  * @return        0 on success
  500.  */
  501. int buildSpec(rpmts ts, Spec spec, int what, int test)
  502.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  503.     /*@modifies spec->sourceHeader, spec->sourceCpioList, spec->cookie,
  504.         spec->sourceRpmName, spec->sourcePkgId,
  505.         spec->macros, spec->BASpecs,
  506.         spec->buildRestrictions, spec->BANames,
  507.         spec->packages->cpioList, spec->packages->fileList,
  508.         spec->packages->specialDoc, spec->packages->header,
  509.         rpmGlobalMacroContext, fileSystem, internalState @*/;
  510.  
  511. /** \ingroup rpmbuild
  512.  * Generate binary package(s).
  513.  * @param spec        spec file control structure
  514.  * @return        0 on success
  515.  */
  516. int packageBinaries(Spec spec)
  517.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  518.     /*@modifies spec->packages->header, spec->packages->cpioList,
  519.         spec->sourceRpmName,
  520.         rpmGlobalMacroContext, fileSystem, internalState @*/;
  521.  
  522. /** \ingroup rpmbuild
  523.  * Generate source package.
  524.  * @param spec        spec file control structure
  525.  * @return        0 on success
  526.  */
  527. int packageSources(Spec spec)
  528.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  529.     /*@modifies spec->sourceHeader, spec->cookie, spec->sourceCpioList,
  530.         spec->sourceRpmName, spec->sourcePkgId,
  531.         rpmGlobalMacroContext, fileSystem, internalState @*/;
  532.  
  533. /*@=redecl@*/
  534. #ifdef __cplusplus
  535. }
  536. #endif
  537.  
  538. #endif    /* _H_RPMBUILD_ */
  539.